package com.daye.app;

import com.daye.dao.AccountDao;
import com.daye.entity.Account;
import com.daye.entity.Transaction;
import com.daye.utils.DateUtils;
import org.junit.Test;

import java.sql.SQLException;
import java.util.List;

public class AccountTest {
    private AccountDao accountDao = new AccountDao();

    /**
     * 测试连接
     * @throws SQLException
     */
    @Test
    public void testGetAllAccount() throws SQLException {
        List<Account> allAccount = accountDao.getAllAccount();
        allAccount.forEach(account -> {
            System.out.println(account);
        });
    }

    /**
     * a) 使用连接池创建QueryRunner对象；
     * b) 判断转出方是否有足够余额，如果不足，提示信息：”余额不足！”，并结束程序；
     * c) 通过卡号 进行转账的操作；
     * d) 转账结束后, 将转入、转出记录分别写入到Transaction表中。
     */
    @Test
    public void question() throws SQLException {
        //使用连接池创建QueryRunner对象；
        //判断转出方是否有足够余额，如果不足，提示信息：”余额不足！”，并结束程序；
        Account account = accountDao.getAccountByCardNum("1122334455");
        //System.out.println(account);
        if (account.getBalance() < 5000){
            System.out.println("余额不足");
            return;
        }

        //通过卡号 进行转账的操作；
        boolean flag = accountDao.transferMoneyByCard(account.getCard() , "55443332211" , 5000.0);
        if (flag){
            //转账结束后, 将转入、转出记录分别写入到Transaction表中。
            System.out.println("转账成功");
            Transaction out = new Transaction();
            String time = DateUtils.getDateFormart();

            out.setCardid(account.getCard());
            out.setTradate("转出");
            out.setTramoney(5000.0);
            out.setTradate(time);

            Transaction in = new Transaction();
            in.setCardid("55443332211");
            in.setTradate("转入");
            in.setTramoney(5000.0);
            in.setTradate(time);

            flag = accountDao.saveTransferTransaction(out , in);
            if (flag){
                System.out.println("记录成功");
            }else {
                System.out.println("记录失败");
            }
        }else {
            System.out.println("转账失败");
        }

    }
}
